//package com.tangxz.generate_code.utils.base;
//
//import com.tangxz.chat.common.jsr303.AddGroup;
//import com.tangxz.chat.common.jsr303.UpdateGroup;
//import com.tangxz.chat.common.utils.R;
//import com.tangxz.chat.common.utils.page.PageUtils;
//import io.swagger.annotations.ApiOperation;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.validation.annotation.Validated;
//import org.springframework.web.bind.annotation.*;
//
//import java.util.Arrays;
//import java.util.List;
//import java.util.Map;
//
///**
// * @author: Tangxz
// * @email: 1171702529@qq.com
// * @cate: 2021/12/14 20:20
// */
//public abstract class MyBaseController<T, S extends MyBaseService<T>> {
//    @Autowired
//    S service;
//
//    /**
//     * 分页列表查询
//     *
//     * @param params{"page","num"}
//     * @return
//     */
//    /**
//     * 支持全值匹配eq，可在MyBaseServiceImpl层进行更多扩展，入参为：
//     params: {
//       'page': 2,// 页数
//       'limit': 10,//一页的数据量
//       'eq':{
//         "company_id":this.nowCompany.userId
//       }
//     }
//     */
//    @ApiOperation(value = "分页列表查询", notes = "分页列表查询")
//    @GetMapping(value = "/list")
//    public R list(@RequestParam Map<String, Object> params) {
//        PageUtils page = service.queryPage(params);
//        return R.ok().put("page", page);
//    }
//
//    /**
//     * 直接查询
//     *
//     * @param params{"eq"}
//     * @return
//     */
//    @ApiOperation(value = "直接查询", notes = "直接查询——案例 'eq': {company_id:1,state:2}:全值匹配 company_id==1&&state==2 ")
//    @GetMapping(value = "/listQuery")
//    public R listQuery(@RequestParam Map<String, Object> params) {
//        List<T> dataSource= service.listQuery(params);
//        return R.ok().put("dataSource", dataSource);
//    }
//
//    /**
//     * 添加
//     *
//     * @param pojo
//     * @return
//     */
//    @ApiOperation(value = "添加", notes = "添加")
//    @PostMapping(value = "/insert")
//    public R insert(@RequestBody T pojo) {
//        int id = service.insertOrBackId(pojo);
//        return R.ok("添加成功").put("id", id);
//    }
//
//    /**
//     * 添加
//     *
//     * @param pojo
//     * @return
//     */
//    @ApiOperation(value = "添加", notes = "添加")
//    @PostMapping(value = "/save")
//    public R add(@Validated({AddGroup.class}) @RequestBody T pojo) {
//        service.save(pojo);
//        return R.ok("添加成功");
//    }
//
//    /**
//     * 编辑
//     *
//     * @param pojo
//     * @return
//     */
//    @ApiOperation(value = "编辑", notes = "编辑")
//    @PutMapping(value = "/update")
//    public R edit(@Validated({UpdateGroup.class})@RequestBody T pojo) {
//        service.updateById(pojo);
//        return R.ok("编辑成功!");
//    }
//
//    /**
//     * 通过id删除
//     *
//     * @param id
//     * @return
//     */
//    @ApiOperation(value = "通过id删除", notes = "通过id删除")
//    @DeleteMapping(value = "/delete")
//    public R delete(@PathVariable("id") String id) {
//        service.removeById(id);
//        return R.ok("删除成功!");
//    }
//
//    /**
//     * 批量删除
//     *
//     * @param ids
//     * @return
//     */
//    @ApiOperation(value = "批量删除", notes = "批量删除")
//    @DeleteMapping(value = "/deleteBatch")
//    public R deleteBatch(@RequestBody Integer[] ids) {
//        service.removeByIds(Arrays.asList(ids));
//        return R.ok("批量删除成功！");
//    }
//
//    /**
//     * 通过id查询
//     *
//     * @param id
//     * @return
//     */
//    @ApiOperation(value = "通过id查询", notes = "通过id查询")
//    @GetMapping(value = "/info/{id}")
//    public R queryById(@PathVariable("id") Integer id) {
//        T pojo = service.getById(id);
//        String name = pojo.getClass().getTypeName();
//        name = name.substring(name.lastIndexOf(".")+1);
//        name = name.substring(0, 1).toLowerCase() + name.substring(1);
//        return R.ok().put(name, pojo);
//    }
//
//}
